home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 2 / Amiga Tools 2.iso / rexx / golded / startdviprint.ged < prev    next >
Text File  |  1995-03-15  |  3KB  |  117 lines

  1. /* Look at the command at the end of the script an change it accordingly to your
  2. TeX setup 
  3.  
  4. Done by R. Laederach
  5. */
  6.  
  7. /* $VER: 0.9, ©1993 Dietmar Eilert. Empty GoldED macro */
  8.  
  9. OPTIONS RESULTS                             /* enable return codes     */
  10.  
  11. if (LEFT(ADDRESS(), 6) ~= "GOLDED") then    /* not started by GoldEd ? */
  12.     address 'GOLDED.1'
  13.  
  14. 'LOCK CURRENT'                              /* lock GUI, gain access   */
  15. OPTIONS FAILAT 6                            /* ignore warnings         */
  16. SIGNAL ON SYNTAX                            /* ensure clean exit       */
  17.  
  18.  
  19. /*** Look if DVIprint is already busy ***/
  20.  
  21. IF SHOW('P','dviprint') THEN DO
  22.     'REQUEST BODY="DVIprint is already running, please wait"'
  23.     UNLOCK
  24.     EXIT
  25.     END
  26.  
  27. /*** Look if the user forgot to state which printer to use ***/
  28.  
  29. noprinter = mygetenv("DVIPRINT")
  30.  
  31. PARSE UPPER VAR noprinter  . 'PRINTER' drucker .
  32. 'request body='drucker
  33.  
  34. IF noprinter=="" THEN DO
  35.     'REQUEST OLD="printer=" BODY="Use which printer and draft ?" STRING VAR PRINTER'
  36.     /* I hope you stated something reasonable */
  37.     CALL mysetenv("DVIPRINT",'"'printer'"') /* Look at that tricky construction !! */
  38. END 
  39.  
  40. CALL SETCLIP("pages")
  41.  
  42.  
  43. 'QUERY DOC'
  44. filename=RESULT
  45.  
  46. basename = (left(filename, LENGTH(filename)-4))
  47. extension = translate(right(filename, 4) , xrange('a','z'), xrange('A','Z'))
  48.  
  49.  
  50. /*** is there a .dvi file ? ***/
  51. IF ~EXISTS(basename||".dvi") THEN DO
  52.     'REQUEST BODY="The corresponding .dvi file does not exist|Use Start_TeX to generate one."'
  53.     UNLOCK 
  54.     EXIT 5
  55.     END
  56.  
  57. /*** I want to know if the customer wants to print the whole text ***/
  58.  
  59. 'REQUEST BODY="Print all pages ?" BUTTON="_Yep|_Nope"'
  60.    if (RESULT = 0) THEN DO
  61.         OPTIONS RESULTS
  62.         'REQUEST LONG BODY="Print from which page ?" MIN=0 MAX=10000 VAR PAGEFROM'
  63.         IF pagefrom='' THEN DO
  64.            'REQUEST BODY="Enter a number!"'
  65.            UNLOCK
  66.            EXIT
  67.         END
  68.         'REQUEST LONG OLD="" BODY="Print TO which page ?" MIN=0 MAX=1000 VAR PAGETO'
  69.         IF pageto='' THEN DO
  70.            'REQUEST BODY="Enter a number!"'
  71.            UNLOCK
  72.            EXIT
  73.         END
  74.         'REQUEST STRING BODY="Print every (<RET>), ODD or EVEN pages?" VAR WHATPAGE'
  75.         IF whatpage = "" THEN
  76.         CALL SETCLIP("pages","FROM" pagefrom" TO "pageto" ")
  77.         else
  78.         CALL SETCLIP("pages","FROM" pagefrom" TO "pageto whatpage" ")
  79.         END
  80.  
  81.  
  82.  
  83.  
  84. /* now lets start the command given by the user and unlock GoldED */
  85.  
  86.  
  87. ADDRESS COMMAND "run >nil: <nil: tex:bin/DVIPRINT -l -p -r "||GETCLIP("pages")||basename
  88.  
  89. 'UNLOCK' /* VERY important: unlock GUI */
  90. EXIT
  91.  
  92. SYNTAX:
  93.  
  94. SAY "Sorry, error line" SIGL ":" ERRORTEXT(RC) ":-("
  95. 'UNLOCK'
  96. EXIT
  97.  
  98.  
  99. mygetenv: procedure     /* when will ARexx supply GetEnv/SetEnv ? */
  100.    PARSE ARG name       /* Thanks to Georg ! */
  101.  
  102.    IF open(TEMPFILE,"ENV:"||name,'r') THEN DO
  103.     gives = readln(TEMPFILE)
  104.     CALL close TEMPFILE
  105.     END
  106.    ELSE gives = ""
  107.  
  108.    RETURN gives
  109.  
  110. mysetenv: procedure
  111.    PARSE ARG name,content
  112.  
  113.    ADDRESS COMMAND "SetEnv" name content
  114.  
  115.    RETURN
  116.    END
  117.